<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    /* 
    构造函数：是一种特殊的函数，主要用来初始化对象
    使用场景：常规的 {uname:'cxk'...} 语法允许创建一个对象。比如我们创建了佩奇的对象，继续创建乔治的对象
             还需要重新再写一遍太麻烦，此时可以  通过构造函数来快速创建多个类似的对象

    有两个约定：1.它们的命名以大写字母开头  
               2.它们只能由"new"操作符来执行 
               
    new关键字调用函数的行为被称为  实例化
    构造函数内部不需要写return，返回值是 构造函数自动返回创建的新对象
    */

    // 实例化执行过程
    // 1.创建新空对象
    // 2.构造函数 this 指向新对象
    // 3.执行构造函数代码，修改this，添加新的属性
    // 4.返回新对象

    // 创建一个猪 构造函数
    function Pig(uname, age) {
      this.name = uname
      this.age = age
    }
    const peiqi = new Pig('佩奇', 6)
    console.log(peiqi)
    const qiaozhi = new Pig('乔治', 3)
    console.log(qiaozhi)

    // 创建一个商品构造函数
    function Goods(name, price, count) {
      this.name = name
      this.price = price
      this.count = count
    }
    console.log(new Goods('小米', 1999, 20))
    console.log(new Goods('华为', 3999, 59))
    console.log(new Goods('vivo', 1888, 100))

    // 这也是一个构造函数
    const date = new Date('2025-4-17 01:59:00')
    console.log(date)
  </script>
</body>

</html>